package com.link2room.rodimus.facade;

import com.link2room.common.dto.param.base.BaseL2rParamDto;
import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.api.DoDrawParamDto;
import com.link2room.rodimus.dto.param.api.DrawDeliverInfoParamDto;
import com.link2room.rodimus.dto.param.api.DrawLogsParamDto;
import com.link2room.rodimus.dto.param.base.DrawPrizeTypeDto;
import com.link2room.rodimus.dto.param.manager.*;
import com.link2room.rodimus.dto.result.base.*;


import java.util.List;

/**
 * Created by LN on 2017/7/11.16:16
 */
public interface IDrawFacadeService {



    DoDrawResultDto doDrawResultNew(DoDrawParamDto paramDto) throws Exception;



    void createDrawCode() throws Exception;

    List<DrawLogDto> userDrawLogList(BaseL2rParamDto paramDto) throws Exception;

    List<DrawLogDto> logs(DrawLogsParamDto paramDto) throws Exception;

    /**
     * 提交收货地址
     * @param param
     * @throws Exception
     */
    void addDeliverInfo(DrawDeliverInfoParamDto param) throws Exception;

    /**
     * 获得收货地址
     * @param param
     * @return
     * @throws Exception
     */
    DrawDeliverInfoDto getDeliverInfoByPrizeNo(DrawDeliverInfoParamDto param) throws Exception;

    /**
     * 抽奖活动列表
     * @param paramDto
     * @return
     * @throws Exception
     */
    QueryResult<DrawActivityDto> activities(DrawActivitiesParamDto paramDto) throws Exception;

    /**
     * 抽奖活动详情
     * @param paramDto
     * @return
     * @throws Exception
     */
    DrawActivityDto activitiy(DrawActivitiesParamDto paramDto) throws Exception;

    /**
     * 更新抽奖活动
     * @param paramDto
     */
    void updateActivity(DrawActivitiesUpdateParamDto paramDto) throws Exception;

    /**
     * 奖项信息更新
     * @param paramDto
     */
    void updateDrawPrizes(DrawPrizeUpdateParamDto paramDto) throws Exception;
    /**
     * 抽奖活动奖池信息
     * @param paramDto
     * @return
     */
    @Deprecated
    List<DrawJackpotDto> getDrawJackDto(DrawJackpotUpdateParamDto paramDto) throws Exception;

    /**
     * 修改奖池
     * @param paramDto
     */
    @Deprecated
    void jackpotUpdate(DrawJackpotUpdateParamDto paramDto) throws Exception;

    /**
     *
     * @return
     */
    List<DrawDeliverInfoDto> getDrawDeliverInfoList(DrawDeliverInfoParamDto paramDto) throws Exception;

    /**
     *
     * @param paramDto
     */
    void updateDrawDeliverInfo(DrawDeliverInfoParamDto paramDto) throws Exception;

    /**
     * 抽奖机会
     */
    Long findDrawChanceCount(DoDrawParamDto paramDto) throws Exception;

    /**
     * 抽奖类型
     * @param paramDto
     * @return
     */
    QueryResult<DrawPrizeTypeDto> findPrizeBaseType(BaseL2rParamDto paramDto) throws Exception;

    /**
     * 发券补偿
     * @param paramDto
     */
    void redoDrawAfter(DrawAfterDoRedoParamDto paramDto) throws Exception;



    /**
     * 根据prizeCode发卷
     * @param paramDto
     * @return
     * @throws Exception
     */
	DoDrawResultDto doDrawResultWithPrizeCode(DoDrawParamDto paramDto) throws Exception;


	/**
	 * 初始化抽奖机会
	 * @param paramDto
	 * @return
	 */
	Long initDrawChanceCount(DoDrawParamDto paramDto) throws Exception;
}
